package bdd;

import beans.*;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;



/**
 *
 * Vincent
 */

public class QueriesCommandes {

    Connection cnx;
    Date dateZero = new Date(0);

    public QueriesCommandes() throws ClassNotFoundException, SQLException {
        cnx = ConnectBDD.getSingleton();
    }

    /*===================================================================*/
    // Affiche toutes les commandes du client de manière succinte
    // -- prend le numero du client (int cliId)
    /*===================================================================*/
    public ArrayList <CmdCommande> cmdAfficherCommandes(int cliId) throws SQLException {
        ArrayList <CmdCommande> listCommandesJoin = new ArrayList();


        String req1="SELECT DISTINCT LIG.CMD_ID, CMD_DATE, LIV_TITRE, LIV_SOUSTITRE,"
                + " LIV_PRIXHT, AUT_NOM, AUT_PRENOM,  LIG_QTE, TVA_TAUX FROM TJ_LIGNES_COM LIG"
                + " JOIN T_COMMANDES C ON LIG.CMD_ID=C.CMD_ID JOIN T_LIVRES L ON LIG.LIV_ID=L.LIV_ID"
                + " JOIN TJ_AUTEURS_AUT AA ON L.LIV_ID=AA.LIV_ID"
                + " JOIN T_AUTEURS A ON AA.AUT_ID=A.AUT_ID"
                +" JOIN T_TVA TVA ON L.TVA_ID=TVA.TVA_ID"
                + " WHERE CLI_ID="+cliId;

        
        
        Statement stm=cnx.createStatement();
        
        ResultSet   res = stm.executeQuery(req1);
                
        while(res.next())
            {
                CmdCommande cmdCommandesJoin=new CmdCommande();
                
                cmdCommandesJoin.setCmdId(res.getInt("CMD_ID"));
                cmdCommandesJoin.setCmdDate(res.getDate("CMD_DATE"));
                cmdCommandesJoin.setLigCommande(res.getInt("LIG_QTE"));
                cmdCommandesJoin.setLivTitre(res.getString("LIV_TITRE"));
                cmdCommandesJoin.setLivSousTitre(res.getString("LIV_SOUSTITRE"));
                cmdCommandesJoin.setLivPrixHt(res.getFloat("LIV_PRIXHT"));
                cmdCommandesJoin.setTvaTaux(res.getFloat("TVA_TAUX"));
                cmdCommandesJoin.setAutNom(res.getString("AUT_NOM"));
                cmdCommandesJoin.setAutPrenom(res.getString("AUT_PRENOM"));
                
                listCommandesJoin.add(cmdCommandesJoin);
            }        
         
        return listCommandesJoin;
    }

    
    /*===================================================================*/
    // Affiche le détail d'une commande en particulier
    // -- prend le numero de la commande (int cmdId)
    /*===================================================================*/
    public ArrayList<CmdDetailCmde> cmdAfficherLignesCmde(int cmdId) throws SQLException {
        ArrayList<CmdDetailCmde> listLignesJoin = new ArrayList();

        
        String req03="SELECT DISTINCT LIG.CMD_ID, CMD_DATE, LIG.LIV_ID, LIV_TITRE, LIV_SOUSTITRE,"
                + " LIV_PRIXHT,  TVA_TAUX, AUT_NOM, AUT_PRENOM,  LIG_QTE,"
                +" ADR_RUE1, ADR_RUE2, ADR_VILLE, ADR_CP, ADR_PAYS, ADR_SOCIETE,"
                +" TAD_LABEL, C.FAC_ID, FAC_DATE,"
                + " ENV_DATE, ENV_NUMEROCOLIS, TEN_LABEL, TEN_PRIX, TEN_DELAI,"
                +" STA_LABEL"
                + " FROM TJ_LIGNES_COM LIG"
                + " JOIN T_COMMANDES C ON LIG.CMD_ID=C.CMD_ID JOIN T_LIVRES L ON LIG.LIV_ID=L.LIV_ID"
                +" JOIN T_TVA T ON L.TVA_ID=T.TVA_ID"
                + " JOIN TJ_AUTEURS_AUT AA ON L.LIV_ID=AA.LIV_ID"
                + " JOIN T_AUTEURS A ON AA.AUT_ID=A.AUT_ID"
                +" JOIN T_FACTURES F ON C.FAC_ID=F.FAC_ID"
                +" JOIN T_ENVOIS E ON C.ENV_ID=E.ENV_ID"
                +" JOIN T_TYP_ENVOIS TEN ON C.TEN_ID=TEN.TEN_ID"
                +" JOIN T_STATUS_COM S ON C.STA_ID=S.STA_ID"
                +" JOIN T_ADR AD ON AD.CLI_ID=C.CLI_ID"
                +" JOIN T_TYP_ADR TAD ON AD.TAD_ID=TAD.TAD_ID"
                + " WHERE LIG.CMD_ID="+cmdId;
        
        
        System.out.println(req03);
        Statement stm03 = cnx.createStatement();
        ResultSet res03 = stm03.executeQuery(req03);

        while (res03.next()) {
            CmdDetailCmde cmdLignesJoin = new CmdDetailCmde();

            cmdLignesJoin.setCmdId(res03.getInt("CMD_ID"));
            cmdLignesJoin.setCmdDate(res03.getDate("CMD_DATE"));
            cmdLignesJoin.setLigCommande(res03.getInt("LIG_QTE"));
            cmdLignesJoin.setLivId(res03.getInt("LIV_ID"));
            cmdLignesJoin.setLivTitre(res03.getString("LIV_TITRE"));
            cmdLignesJoin.setLivSousTitre(res03.getString("LIV_SOUSTITRE"));
            cmdLignesJoin.setLivPrixHt(res03.getFloat("LIV_PRIXHT"));
            cmdLignesJoin.setTvaTaux(res03.getFloat("TVA_TAUX"));
            cmdLignesJoin.setAutNom(res03.getString("AUT_NOM"));
            cmdLignesJoin.setAutPrenom(res03.getString("AUT_PRENOM"));
            cmdLignesJoin.setAdrRue1(res03.getString("ADR_RUE1"));
            cmdLignesJoin.setAdrRue2(res03.getString("ADR_RUE2"));
            cmdLignesJoin.setAdrVille(res03.getString("ADR_VILLE"));
            cmdLignesJoin.setAdrCp(res03.getString("ADR_CP"));
            cmdLignesJoin.setAdrPays(res03.getString("ADR_PAYS"));
            cmdLignesJoin.setAdrSociete(res03.getString("ADR_SOCIETE"));
            cmdLignesJoin.setTadLabel(res03.getString("TAD_LABEL"));
            cmdLignesJoin.setFacId(res03.getInt("FAC_ID"));
            cmdLignesJoin.setFacDate(res03.getDate("FAC_DATE"));
            cmdLignesJoin.setStaLabel(res03.getString("STA_LABEL"));
            cmdLignesJoin.setEnvDate(res03.getDate("ENV_DATE"));
            cmdLignesJoin.setEnvNumeroColis(res03.getString("ENV_NUMEROCOLIS"));
            cmdLignesJoin.setTenLabel(res03.getString("TEN_LABEL"));
            cmdLignesJoin.setTenPrix(res03.getFloat("TEN_PRIX"));
            cmdLignesJoin.setEnvDelai(res03.getString("TEN_DELAI"));
            
            listLignesJoin.add(cmdLignesJoin);
        }
        return listLignesJoin;
    }
}
